문자 기반 스트림
✒️ 2025-05-15 13:40 내용 수정
char 형 타입으로 데이터를 전송하는 스트림
- 문자만 처리할 수 있다.
- 문자를 처리하는 char형의 크기는 2 byte이므로 별도의 처리가 없다면 정상적으로 파일을 읽지 못한다.
- 문자는 깨지지 않지만 다른 파일 형식은 제대로 읽어오기 힘들기에 바이트 기반 스트림을 사용하는 것이 좋다.
- IO는 Checked exception을 따른다. (IOException, 예외와 에러 필수)
- Reader와 Writer
- 문자 기반 스트림은 ~Reader, ~Writer 형태의 이름이 붙은 클래스들이 있다.
- FileReader/Writer, CharArrayReader/Writer, PipedReader/Writer, StringReader/Writer 클래스가 있다.
- Writer(출력)의 경우 비트 기반 스트림의 출력 스트림처럼 flush()를 해야 파일을 실제 파일에 작성하는데, 현재는 close()에 auto flush가 있어 close()만 해도 된다.
- Reader와 Writer의 메서드는 비슷하고, 이 둘의 메서드는 InputSteam과 OutputStream의 메서드와도 비슷하다.
- File 클래스 참고.
FileReader 인스턴스이름 = new FileReader(파일경로\\이름);
FileReader 인스턴스이름 = new FileReader(파일클래스객체);
| 메서드 | 설명 |
|---|---|
int read() |
1개의 문자를 읽고 반환. 더 이상 읽을 문자가 없으면 -1을 반환. |
int read(char[] buf) |
매개변수로 주어진 배열에 읽은 문자를 저장하고 읽은 수만큼 반환. - 더 이상 읽을 문자가 없으면 -1을 반환. |
int write(char[] buf, int offset int len) |
매개변수로 주어진 배열에 정해진 범위만큼 읽어서 저장. - 시작 위치(offset), 길이(len) |
close() |
스트림 사용을 종료하고 자원을 반환 |
FileWriter 인스턴스이름 = new FileWriter(파일경로\\이름, 이어쓰기 옵션);
FileWriter 인스턴스이름 = new FileWriter(파일클래스객체, 이어쓰기 옵션)
| 메서드 | 설명 |
|---|---|
void write(int i) |
정수 1개 출력 |
void write(String str) |
전달 받은 str을 출력 |
void write(String str, int off, int len) |
전달 받은 str을 시작점 off부터 길이 len만큼 출력 |
void write(char[] buf) |
매개변수로 주어진 배열의 모든 문자를 출력. |
void write(char[] buf, int offset int len) |
매개변수로 주어진 배열의 정해진 범위만큼 출력. 시작 위치(offset), 길이(len) |
void flush() |
출력 버퍼에 남은 모든 내용을 출력 |
close() |
스트림 사용을 종료하고 자원을 반환 |